The present disclosure relates generally to memory management technologies for computing devices. More particularly, the present disclosure relates to controlling the transfer of data for virtual memory management of a computing device. Most modern computer systems employ a type of virtual memory management (VMM) system that is controlled by an operating system. The VMM presents each application or process a separate virtual address space and creates an illusion of large and fast physical memory through the use of a hierarchy of memories of different sizes which usually operate at different speeds. The VMM and the OPERATING SYSTEM are responsible for mapping physical pages to corresponding virtual pages and page faults may occur when attempted accesses to virtual addresses do not have valid translations to corresponding physical addresses.
VMM systems are usually demand-driven. Consequently, pages that were previously saved to paging space, such as external storage consisting of a swap space on a disk, are brought into physical memory when they are referenced-on demand. Usually, the external storage devices operate significantly slower than physical random access memory (RAM), due to such factors as seek time, access latency, etc. Because sending pages out to the paging space, reading pages, and bringing pages into physical memory consumes significant amounts of time, a program or an application will usually need to yield to another process or application and wait, potentially thousands of processor cycles, without making any progress until the requested page arrives. Similarly, if a program faults while referencing a page that is not in physical memory, program execution will have to stall until the page becomes available, at which point execution of the program can continue.
Normally, a processor can only manipulate information, or data, located in physical memory that is located close to the processor, such as registers, caches, and main memory which is usually RAM. The VMM usually retrieves the data from a disk or a network, brings the data closer to the processor upon request, and finds the appropriate places to store that data in main memory. Under significant memory loads of the computer system, the amount of main memory which remains free may drop extremely low. For example, a user may execute numerous applications which use relatively large quantities of main memory. If no space is available in main memory, some of the existing information must be removed and pushed out to the paging space.
In most systems today, the VMM and a paging daemon work together to determine that the data that should be removed and pushed out to or stored in a paging space. When the requested amount of memory is significantly greater than the remaining free amount of main memory, a large number of pages in the system must be pushed out to the paging space. Pushing a large number of pages out to the paging space may result in a significant number of the selected pages being immediately returned to main memory due to reference of those pages.